Перейти к основному содержимому

🧾 Платёж по счёту

Таблица на схеме

26.07.25

📅 Задачи yougile

  • 🔵🟢 Реализовать работу с банковскими выписками ITR-407
  • 🔵🟢 Реализовать разделение платежа на два счёта

✏️ Общее описание

🔎 Уточнить

🖊️ Общие особенности

  • Желательное поведение — бухгалтер загружает файл выгрузки всех платежей за день (или несколько дней). После этого происходит автоматический парсинг файла, в результате которого в базу данных вносятся данные о платежах, а статус счета обновляется соответствующим образом. Если оплату не получилось в автоматическом режиме привязать к счёту или сумма оплат по счёту вышла больше, чем сумма по счёту, то бухгалтеру нужно вручную разрешить конфликты
  • Создание платежей происходит только через парсинг. Редактирование предусматривает только привязку документа к нужному счёту в случае необходимости
  • Проверки которые выполняются (может быть несколько ошибок через запятую):
    • Счёт на оплату должен быть привязан (обязательная проверка, даже с галочкой Подтверждаю правильность данных). Иначе ошибка "Не найден счёт" или "Не найден контрагент"
    • Сумма платежей по счёту не должна превышать сумму в счёте на оплату. Иначе ошибка "Сумма платежей превышает сумму в счёте"
    • Счёт на оплату должен быть в статусе отличном от Отменён. Иначе ошибка "Счёт в уже в статусе Отменён"
    • Счёт получателя в платеже должен совпадать с нашим счётом в счёте на оплату. Иначе ошибка "Счёт получателя не совпадает"
  • Разделение платежа на два счёта будет реализовано позже. В первое время платёж будет привязываться целиком к одному счёту
Логика привязки оплаты к счёту
  1. парсим каждую секцию документа - получаем поля Номер, Дата, Сумма, Назначение платежа, Платильщик счёт, Получатель счёт
  2. в строке назначения платежа ищем номер счёта на оплату по шаблону "\b(\d2-\d+)\b"
  3. проверяем наличие счёта платильщика в БД
  4. ищем счёт на оплату по номеру, найденному в п.2
  5. проверяем, что счёт имеет статус отличный от отменён
  6. проверяем, что Получатель счёт в выгрузке совпадает с номером счёта нашей организации в найденном счёте
  7. проверяем, что общая сумма оплат не превышает суммы счёта
  8. если счёт найден - привязываем оплату к нему
  9. если найдены ошибки - то отображаем их в оплате через запятую

📋 Предзаполненные данные

🔐 Доступ

  • Бухгалтер (просмотр и редактирование)
  • Начальник менеджеров по продажам (просмотр)
  • Менеджер по продажам (просмотр если есть доступ к контрагенту)
  • Помощник менеджера по продажам (просмотр если есть доступ к контрагенту)

💻 Веб интерфейс

Работа происходит в форме счёта на оплату https://orders.regina.fvds.ru/xxxxxxxxxxxxxxxxxxxxxxxxx или в форме банковских выгрузок https://orders.regina.fvds.ru/xxxxxxxxxxxxxxxxxxxxxxxxx

Таблица по выгрузке

Платежи в выгрузке

Колонки:

  • (id)
  • Номер
  • Дата
  • Сумма
  • Ошибка
  • Счёт (на оплату)
  • Заказ покупателя
  • Покупатель
  • Комментарий (зауженная колонка до двух слов)

Для бухгалтера

Просмотр

модальное окно

Поля:

  • Основная информация:
    • Номер
    • Дата
    • Номер счета плательщика
    • Сумма
    • Полное описание (по умолчанию свёрнуто)
    • Ошибка
    • Комментарий
    • (id)
    • (счёт на оплату id)
    • (покупатель id)
    • (заказ покупателя id)
  • Информация по счёту на оплату
    • Номер (ссылка)
    • Дата
    • Итого
    • Всего оплачено
    • Статус
    • Комментарий
    • (id)
  • Информация по контрагенту
    • Краткое наименование (ссылка)
    • ИНН
    • КПП
    • (id)
  • Информация по заказу покупателя
    • Номер (ссылка)
    • Статус задачи Создать заказ покупателя
    • Состояние
    • Валюта
    • Ответственный
    • Всего оплачено
    • Сумма заказа
    • Комментарий
    • (id)
    • (задача Создать заказ покупателя id)

Эндпоинты: Получение платежа по id, Получение краткой информации счёта на оплату по id, Получение краткой информации контрагента по id, Получение краткой заказа покапателя по id

Редактирование

Поля:

  • Основная информация:

    • Номер (не ред.)
    • Дата (не ред.)
    • Номер счета плательщика (не ред.)
    • ИНН платильщика (не ред.)
    • КПП платильщика (не ред.)
    • Номер счёта получателя (не ред.)
    • Назначение платежа (не ред.)
    • Сумма (не ред.)
    • Полное описание (не ред., по умолчанию свёрнуто)
    • Подтверждаю правильность данных (ред.) (галочка. Если установлена, то повторная проверка на беке не происходит, кроме проверки, что счёт на оплату заполнен. Иначе заново выполняются все проверки)
    • Ошибка (не ред.)
    • Комментарий (ред.)
  • Автокомплит выбора контрагента (Наименование/ИНН/КПП)

  • Таблица выбора счёта по контрагенту (с двойными заголовками и возможностью фильтрации)

    • Информация по счёту на оплату
      • Номер (ссылка)
      • Дата
      • Итого
      • Статус (фильтр по умолчанию = "Отправлен" ИЛИ "Частично оплачен")
      • Комментарий
      • (id)
    • Информация по заказу покупателя
      • Номер (ссылка)
      • Статус задачи (фильтр по умолчанию = "Ожидает оплаты")
      • Состояние
      • Валюта
      • Ответственный
      • Сумма заказа
      • Комментарий
      • (id)
  • Информация по счёту на оплату

    • Номер (ссылка)
    • Дата
    • Итого
    • Всего оплачено
    • Статус
    • Комментарий
    • (id)

Эндпоинты: Получение подробной информации платежа по id, Получение краткой информации по контрагентам, Получение данных для таблицы выбора счёта, Получение краткой информации счёта на оплату по id

🔗 Связанные сущности

👨🏽‍💻 API

/Order/InvoicePayment/ - Swagger - Order API